﻿/**
 *
 * @file FITKAcousticsNCTMultipleNoise.h
 * @brief 多重声包
 * @author liuzhiyuan(liuzhiyuan@diso.cn)
 * @date 2024-11-1
 *
 */
#ifndef FITKACOUSTICSNCTMULTIPLENOISE_H
#define FITKACOUSTICSNCTMULTIPLENOISE_H

#include "FITKAcousticsNCTLayUp.h"
#include "FITKAcousticsPhysicsAPI.h"

namespace Acoustics
{
    /**
     * @brief 多重声学包重定义
     * @author liuzhiyuan(liuzhiyuan@diso.cn)
     * @date 2024-11-01
     */
    class FITKAcousticsPhysicsAPI FITKAcousticsNCTMultipleNoiseWeight : public Core::FITKAbstractNDataObject
    {
        FITKCLASS(Acoustics, FITKAcousticsNCTMultipleNoiseWeight);
    public:
        /**
         * @brief Construct a new FITKAcousticsNCTAbstractLayObj object
         * @author liuzhiyuan(liuzhiyuan@diso.cn)
         * @date 2024-10-21
         */
        explicit FITKAcousticsNCTMultipleNoiseWeight() = default;
        /**
         * @brief Destroy the FITKAcousticsNCTAbstractLayObj object
         * @author liuzhiyuan(liuzhiyuan@diso.cn)
         * @date 2024-10-21
         */
        virtual ~FITKAcousticsNCTMultipleNoiseWeight() = default;

        /**
         * @brief 覆盖面积
         * @param[i] coverage 覆盖面积
         * @author liuzhiyuan(liuzhiyuan@diso.cn)
         * @date 2024-11-1
         */
        void setCoverage(double coverage);
        /**
         * @brief 覆盖面积
         * @return double
         * @author liuzhiyuan(liuzhiyuan@diso.cn)
         * @date 2024-11-1
         */
        double getCoverage();
        /**
         * @brief 设置NCTid
         * @param[i] id id
         * @author liuzhiyuan(liuzhiyuan@diso.cn)
         * @date 2024-11-1
         */
        void setNCTID(int id);
        /**
         * @brief id
         * @return int
         * @author liuzhiyuan(liuzhiyuan@diso.cn)
         * @date 2024-11-1
         */
        int getNCTID();
    private:
        /**
         * @brief  覆盖面积
         * @author liuzhiyuan(liuzhiyuan@diso.cn)
         * @date   2024-10-15
         */
        double _coverage{0.0};
        /**
         * @brief  声包id
         * @author liuzhiyuan(liuzhiyuan@diso.cn)
         * @date   2024-11-01
         */
        int _NCTId{};
    };

    /**
     * @brief 多重声包
     * @author liuzhiyuan(liuzhiyuan@diso.cn)
     * @date 2024-11-01
     */
    class FITKAcousticsPhysicsAPI FITKAcousticsNCTMultipleNoise : public FITKAcousticsAbsNCT,
            public Core::FITKAbstractDataManager<FITKAcousticsNCTMultipleNoiseWeight>
    {
        FITKCLASS(Acoustics, FITKAcousticsNCTMultipleNoise);
    public:
        /**
         * @brief 构造函数 LiBaojun
         * @author liuzhiyuan(liuzhiyuan@diso.cn)
         * @date 2024-11-01
         */
        explicit FITKAcousticsNCTMultipleNoise() = default;
        /**
         * @brief 析构函数
         * @author liuzhiyuan(liuzhiyuan@diso.cn)
         * @date 2024-11-01
         */
        virtual ~FITKAcousticsNCTMultipleNoise() = default;
        /**
         * @brief 获取层类型
         * @return FITKAcousticsAbsNCT::NCTType
         * @author liuzhiyuan(liuzhiyuan@diso.cn)
         * @date 2024-11-01
         */
        FITKAcousticsAbsNCT::NCTType getNCTType() override;

    private:


    };
}
#endif // FITKACOUSTICSNCTMULTIPLENOISE_H
